//
//  MainTabbar.m
//  saasRetail
//
//  Created by 黄志刚 on 2021/7/26.
//

#import "MainTabbar.h"

@interface MainTabbar ()

@end

@implementation MainTabbar

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        // 初始化UI
        [self initView];
    }
    return self;
}

#pragma mark - 初始化UI
- (void)initView {
    self.backgroundColor = [UIColor clearColor];
    
    CGFloat itemWidth = kScreenWidth / 5;
    self.centerBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    self.centerBtn.frame = CGRectMake(itemWidth * 2, kScaleNum(-25), itemWidth, kScaleNum(74));
    self.centerBtn.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
    [self.centerBtn setImage:[UIImage imageNamed:@"tabbar_add"] forState:UIControlStateNormal];
    [self.centerBtn addTarget:self action:@selector(clickCenterBtnAction) forControlEvents:UIControlEventTouchUpInside];
    [self addSubview:self.centerBtn];
    
    self.backgroundColor = [UIColor clearColor];
}

//重写hitTest方法，去监听"+"按钮和“添加”标签的点击，目的是为了让凸出的部分点击也有反应
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    
    //这一个判断是关键，不判断的话push到其他页面，点击“+”按钮的位置也是会有反应的，这样就不好了
    //self.isHidden == NO 说明当前页面是有TabBar的，那么肯定是在根控制器页面
    //在根控制器页面，那么我们就需要判断手指点击的位置是否在“+”按钮或“添加”标签上
    //是的话让“+”按钮自己处理点击事件，不是的话让系统去处理点击事件就可以了
    if (self.isHidden == NO)
    {
        
        //将当前TabBar的触摸点转换坐标系，转换到“+”按钮的身上，生成一个新的点
        CGPoint newA = [self convertPoint:point toView:self.centerBtn];
        
        //判断如果这个新的点是在“+”按钮身上，那么处理点击事件最合适的view就是“+”按钮
        if ( [self.centerBtn pointInside:newA withEvent:event])
        {
            return self.centerBtn;
        }
        else
        {//如果点不在“+”按钮身上，直接让系统处理就可以了
            
            return [super hitTest:point withEvent:event];
        }
    }
    else
    {
        //TabBar隐藏了，那么说明已经push到其他的页面了，这个时候还是让系统去判断最合适的view处理就好了
        return [super hitTest:point withEvent:event];
    }
}



- (void)layoutSubviews {
    [super layoutSubviews];
    //去掉TabBar上部的横线
    for (UIView *view in self.subviews) {
        //横线的高度为0.5
      if ([view isKindOfClass:[UIImageView class]] && view.bounds.size.height <= 1) {
        UIImageView *line = (UIImageView *)view;
        line.hidden = YES;
       }
    }
}


#pragma mark - 中间按钮 点击事件
- (void)clickCenterBtnAction {
    // 执行代理
    if ([self.mainTabbarDelegate respondsToSelector:@selector(clickCenterBtnActionMainTabbar:)]) {
        self.centerBtn.selected = YES;
        [self.mainTabbarDelegate clickCenterBtnActionMainTabbar:self];
    }
}
@end
